using System;
using System.Collections.Generic;
using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Threading;

namespace SharpMud.Server.Systems.Scripting.Processing.Source
{
    public interface IScriptSourceHandle : IDisposable, IRequiresExternalPulsing, ICompilerErrorTransformer
    {              
        CodeCompileUnit         GetCompileUnit();
        System.Type             PreferredLanguage { get;}

        System.Uri              ContentLocation { get;}
        Guid                    ContentHash     { get;}

        ICompiledScriptHandle   GetCompiledHandle();

        IScriptCompileResults   LastCompileResults { get;}

        bool IsDirty { get;}
        event EventHandler Dirtied;
        event EventHandler Settled;
    }

}